package com.copa.l1616;

/**
 * @author copa
 * @createDate 2023-03-18 16:31
 * @function 双指针法
 */
public class Test2 {

    public boolean checkPalindromeFormation(String a, String b) {
        // a前缀+b后缀 or b后缀+a前缀比较
        return checkConcatPalindrome(a, b) || checkConcatPalindrome(b, a);
    }

    private Boolean checkConcatPalindrome(String tempA, String tempB) {
        int left = 0;
        // 假设都以第一个字符串作为总长度（反正tempA==tempB）
        int right = tempA.length() - 1;
        // tempA前缀与tempB后缀逐一比较
        while (left < right && tempA.charAt(left) == tempB.charAt(right)) {
            left++;
            right--;
        }
        if (left >= right) {
            return true;
        }
        // 这里是自身进行比较，是否为回文字符串
        return checkSelfPalindrome(tempA, left, right) || checkSelfPalindrome(tempB, left, right);
    }

    private boolean checkSelfPalindrome(String str, int left, int right) {
        // 自身进行比较，是否为回文字符串
        while (left < right && str.charAt(left) == str.charAt(right)) {
            left++;
            right--;
        }
        return left >= right;
    }

    public static void main(String[] args) {
        String a = "abdef";
        String b = "fecab";
        System.out.println(new Test2().checkPalindromeFormation(a, b));
    }
}
